// pages/index/search/search.js
import util from "../../../../utils/utils";
import data from "../../../../utils/data";
import User from "../../../../utils/user";
import {
  GoodsHttp
} from "../../../../api/goods";

const goodsModel = new GoodsHttp();

const PLATFORM_NAME = {
  '1': '拼多多',
  '3': '京东',
  // '4': '巷友'
}

Page({
  boxHeight: 0,
  data: {
    initUser:true,
    keyword: '', // 搜索关键字 - 页面传值
    searchVal: '', // 搜索关键字 - 页面搜索框搜索值
    goodsList: [], // 商品列表
    platformName: '拼多多', // 平台名字
    platformType: '1', // 平台类型
    sortKey: '', // 排序 key: 综合（all），价格（price），销量（sale）
    sortVal: 0, // 排序 val：0-综合排序; 3-按价格升序; 4-按价格降序; 5-按销量升序; 6-按销量降序
    sortType: null, // 排序类型：升序/降序
    isDefaultSort: true, // 排序 - 默认排序
    isHiddenPlatformDropdown: true, // 是否隐藏平台选择下拉菜单
    isHasCoupon: false, // 是否存在优惠券
    isEmptyList: false, // 是否为空列表
    isNotMore: false, // 是否没有更多列表
    isShowBackTop: false, // 是否显示回到顶部
    isSelectBoxSticky: false, // 选择栏是否吸顶
    selectBoxTop: 0, // 选择栏距离顶部的距离
    page: 1,
    pageSize: 10,
    totalNum: 0,
  },

  // 页面载入完成
  initPage: function (options) {
    let platformType = options.platform || this.data.platformType
    this.setData({
      platformType: platformType,
      platformName: PLATFORM_NAME[platformType],
      keyword: options.keyword,
      searchVal: options.keyword
    })
    wx.setNavigationBarTitle({
      title: '搜索：' + options.keyword
    })
    this.httpGoodsList()
  },

  // 搜索框 - chagne 输入值
  onSearchValChange (event) {
    this.setData({
      searchVal: event.detail
    })
  },

  // 搜索框 - search 搜索
  onSearch: function (event) {
    const { searchVal } = this.data
    if (searchVal === '') {
      util.msg('请输入要搜索的关键词!');
      return false;
    }
    this.setData({
      keyword: searchVal,
      page: 1
    })
    wx.setNavigationBarTitle({
      title: `搜索：${searchVal}`
    });
    this.httpGoodsList();
  },

  // 平台选择
  // 平台选择 - 打开平台选择下拉菜单
  onOpenPlatforDdropdown() {
    this.setData({
      isHiddenPlatformDropdown: !this.data.isHiddenPlatformDropdown
    })
  },

  // 平台选择 - radio change
  onChangePlatform(event) {
    this.setData({
      platformType: event.detail
    })
  },

  // 平台选择 - cell click
  onClickPlatform(event) {
    const {
      name,
      type
    } = event.currentTarget.dataset;
    this.setData({
      platformName: name,
      platformType: type,
      isHiddenPlatformDropdown: true,
      page: 1
    });
    this.httpGoodsList();
  },

  // 排序
  onChangeSort(event) {
    let {
      sortkey,
      sortup,
      sortdown,
      sortdefault
    } = event.currentTarget.dataset
    if (this.data.sortKey === sortkey && this.data.sortType === 'sortUp') {
      this.setData({
        sortType: 'sortDown',
        sortKey: sortkey,
        sortVal: sortdown,
        isDefaultSort: false,
        page: 1
      })
    } else {
      this.setData({
        sortType: 'sortUp',
        sortKey: sortkey,
        sortVal: sortup,
        isDefaultSort: false,
        page: 1
      })
    }
    if (sortdefault) {
      this.setData({
        sortType: null,
        isDefaultSort: true,
        page: 1
      })
    }
    this.httpGoodsList();
  },

  // 是否有券 switch
  onSwitchCoupon(e) {
    this.setData({
      isHasCoupon: e.detail
    });
    this.setData({
      page: 1
    })
    this.httpGoodsList();
  },

  // 页面相关事件处理函数--监听用户下拉动作
  onPullDownRefresh: function () {
    this.setData({
      page: 1
    })
    this.httpGoodsList()
  },

  // 页面上拉触底事件的处理函数
  onReachBottom: function () {
    if (this.data.isNotMore || this.data.isEmptyList) {
      return
    }
    this.setData({
      page: this.data.page + 1
    })
    this.httpGoodsList()
  },

  // 监听页面滚动
  onPageScroll(event) {
    let self = this;
    let { selectBoxTop, isSelectBoxSticky } = this.data
    if (selectBoxTop === 0) {
      wx.createSelectorQuery()
        .select('.select-container')
        .boundingClientRect(function (res) {
          self.setData({
            selectBoxTop: res.top
          })
        }).exec()
    } else {
      if (isSelectBoxSticky !== (event.scrollTop > selectBoxTop)) {
        this.setData({
          isSelectBoxSticky: (event.scrollTop > selectBoxTop)
        })
      }
    }
    let isBackTop = event.scrollTop > 200;
    if (isBackTop !== this.data.isShowBackTop) {
      self.setData({
        isShowBackTop: isBackTop
      });
    }
  },

  // 获取商品列表
  httpGoodsList() {
    if (this.data.platformType === '4') {
      // 巷友自营
    } else {
      this.httpGetGoodsList()
    }
  },

  // 获取商品列表 - 京东/拼多多
  httpGetGoodsList() {
    const {
      goodsList,
      sortVal,
      keyword,
      platformType,
      isHasCoupon,
      page,
      pageSize
    } = this.data
    // util.loading()
    goodsModel.goodsSearch({
      keyword: keyword, // 关键字
      page: page, // 页数
      page_size: pageSize, // 每页数量
      sort_type: sortVal, // 排序：0-综合排序; 3-按价格升序; 4-按价格降序; 5-按销量升序; 6-按销量降序
      platform_type: parseInt(platformType), // 来源：拼多多 京东
      has_coupon: isHasCoupon // 是否有优惠券
    }).then((res) => {
      let goodsListArr = page === 1 ? res.goods_list : goodsList.concat(res.goods_list);
      this.setData({
        goodsList: goodsListArr,
        totalNum: res.total_count,
        isNotMore: goodsListArr.length >= res.total_count,
        isEmptyList: goodsListArr.length === 0
      })
      // util.closeLoading()
      wx.stopPullDownRefresh();
    })
  }
});
